/**
 * 
 */
package fr.miage.client.metier.produit;

import com.google.gwt.user.client.rpc.AsyncCallback;

import fr.miage.client.metier.entite.Categorie;
import fr.miage.client.metier.entite.Commande;
import fr.miage.client.metier.entite.Produit;

/**
 * @author romain
 * 
 */
public interface ProduitBusinessServiceAsync {
	/**
	 * Retourne la liste des produits lié à une categorie
	 * 
	 * @param categorie
	 * @return
	 */
	public void getProduitByCategorie(Categorie categorie,
			AsyncCallback callback);


	/**
	 * Retourne la liste des produits associe a une commande.
	 * 
	 * @param commande
	 * @return
	 */
	public void getProduitByCommande(Commande commande, AsyncCallback callback);

	/**
	 * Insere un produit dans la base de données
	 * 
	 * @param produit
	 */
	public void createProduit(Produit produit, AsyncCallback callback);

	/**
	 * Supprime un produilt de la base de donees
	 * 
	 * @param produit
	 */
	public void deleteProduit(Produit produit, AsyncCallback callback);

	/**
	 * Modifie un produit dans la base de données
	 * 
	 * @param oldProduit
	 * @param newProduit
	 */
	public void modifyProduit(Produit oldProduit, Produit newProduit);

	/**
	 * Selecionne un produit dans la base de données
	 * 
	 * @param produit
	 * @return
	 */
	public void getProduit(Produit produit, AsyncCallback callback);

	/**
	 * renvoi la liste de tous les produits dans la base de donnees
	 * 
	 * @return
	 */
	public void getAllProduit(AsyncCallback callback);

}
